const { client } = require('./redisClient');
const { promisify } = require('util');
// 将 Redis 的 API 转换为返回 Promise 的函数
const lrangeAsync = promisify(client.lrange).bind(client);
const llenAsync = promisify(client.llen).bind(client);

/**
 * 同步执行 Redis LRANGE 命令并返回列表中的最后一条数据。
 * @param {string} key Redis 列表的键。
 * @returns {Promise<string>} 列表中的最后一条数据。
 */
async function getMeterLastData(key) {
    try {
        // 获取列表长度
        const length = await llenAsync(key);

        if (length === 0) {
            return null; // 列表为空时返回 null
        }

        // 获取最后一个元素
        const lastItem = await lrangeAsync(key, -1, -1);
        return lastItem[0]; // lrange 返回一个数组，我们需要第一个元素
    } catch (error) {
        console.error('Error in getLastItemFromList:', error);
        throw error;
    }
}
module.exports = getMeterLastData;